package ${basePackage}.adapter.${module};

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.unswift.annotation.api.Api;
import com.unswift.annotation.api.ApiField;
import com.unswift.annotation.api.ApiMethod;
import ${basePackage}.adapter.BaseAdapter;
import ${basePackage}.mapper.${module}.${currModule}.${entityName}ExtendMapper;
import ${basePackage}.mapper.${module}.${currModule}.${entityName}Mapper;
import ${basePackage}.pojo.dao.${module}.${currModule}.${entityName}DataDo;
import ${basePackage}.pojo.dao.${module}.${currModule}.${entityName}SearchDo;
import ${basePackage}.pojo.dao.${module}.${currModule}.${entityName}SingleDo;
import ${basePackage}.sql.${module}.${currModule}.${entityName}Sql;
import com.unswift.utils.ExceptionUtils;
import com.unswift.utils.ObjectUtils;

@Component
@Api(value="${tableComment!''}公共服务-此bean可以被任何Service引用", author="${username}", date="${date}", version="1.0.0")
public class ${entityName}Adapter extends BaseAdapter{
	
	@Autowired
	@ApiField("${tableComment!''}数据库操作对象")
	private ${entityName}Mapper ${entitySampleName}Mapper;
	
	@Autowired
	@ApiField("${tableComment!''}自定义sql")
	private ${entityName}Sql ${entitySampleName}Sql;
	
	@Autowired
	@ApiField("${tableComment!''}数据库扩展操作对象")
	private ${entityName}ExtendMapper ${entitySampleName}ExtendMapper;
	
	@ApiMethod(value="获取${tableComment!''}数据库操作对象", returns=@ApiField("数据库操作对象"))
	public ${entityName}Mapper getMapper(){
		return ${entitySampleName}Mapper;
	}
	
	@ApiMethod(value="获取${tableComment!''}模块名称", returns=@ApiField("模块名称"))
	public String getModule(){
		return "${entitySampleName}";
	}
	
	@ApiMethod(value="根据主键查询单个对象", params=@ApiField("主键"), returns=@ApiField("主键匹配的对象"))
	public ${entityName}DataDo findById(Long id){
		return this.findSingle(new ${entityName}SingleDo(id, null));
	}
	
	@ApiMethod(value="根据主键列表查询列表对象", params=@ApiField("主键列表"), returns=@ApiField("主键列表匹配的列表对象"))
	public List<${entityName}DataDo> findByIds(List<Long> idList){
		return this.findList(new ${entityName}SearchDo(idList));
	}
	
	@ApiMethod(value="根据查询对象查询首个对象", params={@ApiField("查询对象"), @ApiField("查询到多个是否抛出异常，可以传入指定提示语，如果提示语为空，则不提示，总的提示与格式：根据%s查询到多条数据，只需要传递%s部分即可")}, returns=@ApiField("首个对象"))
	public ${entityName}DataDo findFirst(${entityName}SearchDo search, String multipleException){
		List<${entityName}DataDo> list=this.findList(search);
		if(ObjectUtils.isEmpty(list)){
			return null;
		}
		if(ObjectUtils.isNotEmpty(multipleException)){
			ExceptionUtils.trueException(list.size()>1, "multiple.data.found", multipleException);
		}
		return list.get(0);
	}
}
